package com.espeaker.sdk;

import com.espeaker.sdk.model.SubError;
import java.util.List;

/**
 * SDK Api错误异常
 * @author jimmy
 */
public class ApiException extends Exception {

	private static final long serialVersionUID = 475022994858770424L;

	private int statusCode = -1;
    private String solution;
    private List<SubError> subErrors;

    public ApiException(int statusCode, String msg) {
        super(msg);
        this.statusCode = statusCode;
    }

    public ApiException(int statusCode, String msg, Exception cause) {
        super(msg, cause);
        this.statusCode = statusCode;
    }

    public ApiException(int statusCode, String msg, String solution) {
        super(msg);
        this.statusCode = statusCode;
        this.solution = solution;
    }

    public ApiException(int statusCode, String msg, String solution, Exception cause) {
        super(msg, cause);
        this.statusCode = statusCode;
        this.solution = solution;
    }

    public ApiException(Exception cause) {
        super(cause);
    }

    public ApiException(String msg) {
        super(msg);
    }

    public int getStatusCode() {
        return statusCode;
    }

    public String getSolution() {
        return solution;
    }

    public List<SubError> getSubErrors() {
        return subErrors;
    }

    public void setSubErrors(List<SubError> subErrors) {
        this.subErrors = subErrors;
    }

    /* statusCode
    0   ：	成功
    1	：	服务不可用
    2	：	开发者权限不足
    4	：	图片上传失败
    5	：	HTTP方法被禁止
    6	：	编码错误
    7	：	请求被禁止
    8	：	服务已经作废
    9	：	业务逻辑出错
    20	：	缺少sessionId参数
    21	：	无效的sessionId参数
    22	：	缺少appKey参数
    23	：	无效的appKey参数
    24	：	缺少签名参数
    25	：	无效签名
    26	：	缺少方法名参数
    27	：	不存在的方法名
    28	：	缺少版本参数
    29	：	非法的版本参数
    3	：	用户权限不足
    30	：	不支持的版本号
    31	：	无效数据格式
    32	：	缺少必选参数
    33	：	非法的参数
    34	：	用户调用服务的次数超限
    35	：	会话调用服务的次数超限
    36	：	应用调用服务的次数超限
    37	：	应用调用服务的频率超限
    38	：	缺少timestamp参数
    39	：	无效timestamp参数
    */
}
